﻿using Domain.Entities;
using Domain.Entities.Audit;
using Domain.Entities.Organizations;
using Domain.Entities.Identity;
using Domain.Entities.Loggers;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Domain.Entities.Tenants;
using Common.Interfaces;

namespace Application.Common.Interfaces;

public interface IApplicationDbContext: IUnitOfWork
{
    DbSet<User> Users { get; set; }
    DbSet<AuditTrail> AuditTrails { get; set; }
    DbSet<Logger> Loggers { get; set; }
    DbSet<Role> Roles { get; }
    DbSet<UserRole> UserRoles { get; }
    DbSet<Menu> Menus { get; }
    DbSet<RoleMenu> RoleMenus { get; }
    DbSet<Organization> Organizations { get; }
    DbSet<Tenant> Tenants { get;  }
    int SaveChanges();
    DatabaseFacade Database { get; }
    EntityEntry Entry(object entity);
}
